package com.wxzz.elearing.evaluation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.evaluation.dto.BusinessCategory4EvaluationCriterionDto;
import com.wxzz.elearing.evaluation.dto.BusinessCategoryDto;
import com.wxzz.elearing.evaluation.dto.BusinessCategoryRuleReportDto;
import com.wxzz.elearing.evaluation.dto.EvaluationCriterionDto;
import com.wxzz.elearing.evaluation.entity.BusinessCategory;
import com.wxzz.elearing.evaluation.entity.BusinessCategoryReport;
import com.wxzz.elearing.evaluation.entity.EvaluationCriterion;
import com.wxzz.elearing.evaluation.vo.GeneralStatisticsVo;
import com.wxzz.elearing.evaluation.vo.StarStatisticsVo;
import com.wxzz.elearning.common.vo.JgPageVo;
import com.wxzz.elearning.common.vo.ReturnVO;

import java.util.List;

/**
 * <p>
 * 行业类目/组别管理 服务类
 * </p>
 *
 * @author
 * @since 2021-04-10
 */
public interface IBusinessCategoryService extends IService<BusinessCategory> {

    /**
     * 添加类目
     *
     * @param businessCategory
     * @return
     */
    ReturnVO saveBusinessCategory(BusinessCategory businessCategory);

    /**
     * 类目列表
     *
     * @param businessCategoryDto
     * @return
     */
    ReturnVO<JgPageVo<List<BusinessCategory>>> listBusinessCategory(BusinessCategoryDto businessCategoryDto);

    /**
     * 列出测评标准的类目列表
     *
     * @return
     */
    ReturnVO<JgPageVo<List<BusinessCategory>>> listBusinessCategory4EvaluationCriterion(BusinessCategory4EvaluationCriterionDto businessCategory4EvaluationCriterionDto);

    /**
     * 行业类目列表(小程序)
     *
     * @return
     */
    ReturnVO<List<BusinessCategory>> wxListBusinessCategory();

    /**
     * 根据行业类目id删除
     *
     * @param businessCategoryId
     * @return
     */
    ReturnVO deleteByBusinessCategoryId(Long businessCategoryId);

    /**
     * 查询出当前用户对应的测试介绍
     *
     * @return
     */
    ReturnVO<BusinessCategory> selectCurUserBusinessCategory(Long wxUserId);

    /**
     * 根据行业类目id查询行业类目名称
     *
     * @param businessCategoryId
     * @return
     */
    ReturnVO<String> selectBusinessCategoryById(Long businessCategoryId);

    /**
     * 列出报告设置
     *
     * @param businessCategoryRuleReportDto
     * @return
     */
    ReturnVO<JgPageVo<List<BusinessCategoryReport>>> listBusinessCategoryReport(BusinessCategoryRuleReportDto businessCategoryRuleReportDto);

    /**
     * 添加或修改测评报告设置
     *
     * @param businessCategoryRuleReport
     * @return
     */
    ReturnVO saveBusinessCategoryReport(BusinessCategoryReport businessCategoryRuleReport);

    /**
     * 新增或修改测评标准
     *
     * @param evaluationCriterion
     * @return
     */
    ReturnVO saveEvaluationCriterion(EvaluationCriterion evaluationCriterion);

    /**
     * 列出测评标准(总后台)
     *
     * @param evaluationCriterionDto
     * @return
     */
    ReturnVO<JgPageVo<List<EvaluationCriterion>>> listEvaluationCriterion(EvaluationCriterionDto evaluationCriterionDto);

    /**
     * 根据当前用户列出测评标准
     *
     * @param wxUserId
     * @param evaluationCriterionDto
     * @return
     */
    ReturnVO<JgPageVo<List<EvaluationCriterion>>> wxListEvaluationCriterion(Long wxUserId, EvaluationCriterionDto evaluationCriterionDto);

    /**
     * 根据测评标准id删除
     *
     * @return
     */
    ReturnVO deleteEvaluationCriterion(Long evaluationCriterionId);


    /**
     * 综合数据(概况总览)
     *
     * @return
     */
    ReturnVO<GeneralStatisticsVo> selectGeneralStatisticsVo();

    /**
     * 星级认证(概况总览)
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO<StarStatisticsVo> selectStarStatisticsVo(Long enterpriseId);
}
